#ifndef __MEM_FREE_H__
#define __MEM_FREE_H__

#include <stdbool.h>

typedef struct mem_t mem_t;

typedef struct mem_t {
    mem_t * next;                                                                       // 下一个元素
    mem_t * previous;                                                                   // 上一个元素
    int     size;                                                                       // 内存块大小。不包含本结构体。
    void  * data;                                                                       // 返回给mem_alloc的数据。
} mem_t;

void * mem_alloc(int size, bool zero_init);
void safe_free(void * data);
int get_mem_blocks();
int get_mem_sizes();
void free_all();

#endif
